﻿#region Header
// Copyright 2007-2011, Jerónimo Milea
// 
// This file is part of NetJsWire.
// 
//     NetJsWire is free software: you can redistribute it and/or modify
//     it under the terms of the GNU General Public License as published by
//     the Free Software Foundation, either version 3 of the License, or
//     (at your option) any later version.
// 
//     NetJsWire is distributed in the hope that it will be useful,
//     but WITHOUT ANY WARRANTY; without even the implied warranty of
//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//     GNU General Public License for more details.
// 
//     You should have received a copy of the GNU General Public License
//     along with NetJsWire.  If not, see <http://www.gnu.org/licenses/>.
#endregion

using NetJsWire.JsonRpcHandler;
using NetJsWire.JsonRpcHandler.Attributes;
using NetJsWire.Widgets.Renderers.Core;

namespace NetJsWire.Widgets.Renderers.ToolBar
{
    [ClassName( "Ext.Toolbar" )]
    internal class ToolBar : Widget, IRenderer
    {
        private readonly Ui.ToolBar.ToolBar _ts;
        private bool _justRendered;

        public ToolBar( object baseObject )
            : base( baseObject )
        {
            _ts = baseObject as Ui.ToolBar.ToolBar;
        }

        #region IRenderer Members

        public override void Render()
        {
            if ( !Rendered )
            {
                SetAttribute( ControlNode, "isInContainer", true );
                SetAttribute( ControlNode, "isContainer", true );
                if ( !_ts.IsInPanel )
                {
                    EnsureParentNodePosition();
                }

                if ( !_ts.AutoSize && !_ts.IsInPanel )
                    SetConstructionProperty( "width", _ts.Width );

                ControlNode.AppendChild( WebApplication.Instance.XmlDocument.CreateNode( "element", "items", "" ) );

                _justRendered = true;
            }
            base.Render();

            if ( _justRendered && _ts.IsInPanel )
            {
                ControlNode[ "options" ].Attributes.Remove( ControlNode[ "options" ].Attributes[ "x" ] );
                ControlNode[ "options" ].Attributes.Remove( ControlNode[ "options" ].Attributes[ "y" ] );
                ControlNode[ "options" ].Attributes.Remove( ControlNode[ "options" ].Attributes[ "width" ] );
                //ControlNode[ "options" ].Attributes.Remove( ControlNode[ "options" ].Attributes[ "height" ] );
            }
            _justRendered = false;
        }

        #endregion
    }
}